using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("W8Touch")]
	public class W8Touch : MonoBehaviour
	{
		[Attribute38("W8Touch.tTouchData")]
		public class tTouchData : MonoClass
		{
			public int m_x => method_2<int>("m_x");

			public int m_y => method_2<int>("m_y");

			public int m_ID => method_2<int>("m_ID");

			public int m_Time => method_2<int>("m_Time");

			public tTouchData(IntPtr address, string className)
				: base(address, className)
			{
			}

			public tTouchData(IntPtr address)
				: this(address, "tTouchData")
			{
			}
		}

		public struct RECT
		{
			public int Left;

			public int Top;

			public int Right;

			public int Bottom;
		}

		public enum KeyboardFlags
		{
			Shown = 1,
			NotShown = 2,
			SuccessTabTip = 4,
			SuccessOSK = 8,
			ErrorTabTip = 0x10,
			ErrorOSK = 0x20,
			NotFoundTabTip = 0x40,
			NotFoundOSK = 0x80
		}

		public enum TouchState
		{
			None,
			InitialDown,
			Down,
			InitialUp
		}

		[Attribute38("W8Touch.IntelDevice")]
		public class IntelDevice : MonoClass
		{
			public IntelDevice(IntPtr address, string className)
				: base(address, className)
			{
			}

			public IntelDevice(IntPtr address)
				: this(address, "IntelDevice")
			{
			}

			public static string GetDeviceName(int deviceId)
			{
				return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "IntelDevice", "GetDeviceName", deviceId);
			}
		}

		public enum PowerSource
		{
			Unintialized = -1,
			BatteryPower = 0,
			ACPower = 1,
			UndefinedPower = 0xFF
		}

		public enum FEEDBACK_TYPE
		{
			FEEDBACK_TOUCH_CONTACTVISUALIZATION = 1,
			FEEDBACK_PEN_BARRELVISUALIZATION,
			FEEDBACK_PEN_TAP,
			FEEDBACK_PEN_DOUBLETAP,
			FEEDBACK_PEN_PRESSANDHOLD,
			FEEDBACK_PEN_RIGHTTAP,
			FEEDBACK_TOUCH_TAP,
			FEEDBACK_TOUCH_DOUBLETAP,
			FEEDBACK_TOUCH_PRESSANDHOLD,
			FEEDBACK_TOUCH_RIGHTTAP,
			FEEDBACK_GESTURE_PRESSANDTAP
		}

		public static bool s_initialized => MonoClass.smethod_6<bool>(TritonHs.MainAssemblyPath, "", "W8Touch", "s_initialized");

		public static bool s_isWindows8OrGreater => MonoClass.smethod_6<bool>(TritonHs.MainAssemblyPath, "", "W8Touch", "s_isWindows8OrGreater");

		public static IntPtr s_DLL => MonoClass.smethod_6<IntPtr>(TritonHs.MainAssemblyPath, "", "W8Touch", "s_DLL");

		public static int MaxTouches => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "W8Touch", "MaxTouches");

		public static int MaxInitializationAttempts => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "W8Touch", "MaxInitializationAttempts");

		public int m_intializationAttemptCount => method_2<int>("m_intializationAttemptCount");

		public List<TouchState> m_touchState => method_3<Class250<TouchState>>("m_touchState")?.method_25();

		public Vector3 m_touchPosition => method_2<Vector3>("m_touchPosition");

		public Vector2 m_touchDelta => method_2<Vector2>("m_touchDelta");

		public RECT m_desktopRect => method_2<RECT>("m_desktopRect");

		public bool m_isVirtualKeyboardVisible => method_2<bool>("m_isVirtualKeyboardVisible");

		public bool m_isVirtualKeyboardShowRequested => method_2<bool>("m_isVirtualKeyboardShowRequested");

		public bool m_isVirtualKeyboardHideRequested => method_2<bool>("m_isVirtualKeyboardHideRequested");

		public PowerSource m_lastPowerSourceState => method_2<PowerSource>("m_lastPowerSourceState");

		public bool m_bWindowFeedbackSettingValue => method_2<bool>("m_bWindowFeedbackSettingValue");

		public bool m_bIsWindowFeedbackDisabled => method_2<bool>("m_bIsWindowFeedbackDisabled");

		public W8Touch(IntPtr address, string className)
			: base(address, className)
		{
		}

		public W8Touch(IntPtr address)
			: this(address, "W8Touch")
		{
		}

		public static IntPtr FindWindow(string className, string windowName)
		{
			return MonoClass.smethod_14<IntPtr>(TritonHs.MainAssemblyPath, "", "W8Touch", "FindWindow", new object[2] { className, windowName });
		}

		public static W8Touch Get()
		{
			return MonoClass.smethod_15<W8Touch>(TritonHs.MainAssemblyPath, "", "W8Touch", "Get", Array.Empty<object>());
		}

		public static void AppQuit()
		{
			MonoClass.smethod_17(TritonHs.MainAssemblyPath, "", "W8Touch", "AppQuit");
		}

		public static bool IsInitialized()
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "W8Touch", "IsInitialized", Array.Empty<object>());
		}

		public void Start()
		{
			method_8("Start");
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public void Destroy()
		{
			method_8("Destroy");
		}

		public void Update()
		{
			method_8("Update");
		}

		public void OnGUI()
		{
			method_8("OnGUI");
		}

		public Vector2 TransformTouchPosition(Vector2 touchInput)
		{
			return method_11<Vector2>("TransformTouchPosition", new object[1] { touchInput });
		}

		public void ToggleTouchMode()
		{
			method_8("ToggleTouchMode");
		}

		public void ShowKeyboard()
		{
			method_8("ShowKeyboard");
		}

		public void HideKeyboard()
		{
			method_8("HideKeyboard");
		}

		public void ShowOSK()
		{
			method_8("ShowOSK");
		}

		public string GetIntelDeviceName()
		{
			return method_13("GetIntelDeviceName");
		}

		public PowerSource GetBatteryMode()
		{
			return method_11<PowerSource>("GetBatteryMode", Array.Empty<object>());
		}

		public int GetPercentBatteryLife()
		{
			return method_11<int>("GetPercentBatteryLife", Array.Empty<object>());
		}

		public bool IsVirtualKeyboardVisible()
		{
			return method_11<bool>("IsVirtualKeyboardVisible", Array.Empty<object>());
		}

		public bool GetTouch(int touchCount)
		{
			return method_11<bool>("GetTouch", new object[1] { touchCount });
		}

		public bool GetTouchDown(int touchCount)
		{
			return method_11<bool>("GetTouchDown", new object[1] { touchCount });
		}

		public bool GetTouchUp(int touchCount)
		{
			return method_11<bool>("GetTouchUp", new object[1] { touchCount });
		}

		public Vector3 GetTouchPosition()
		{
			return method_11<Vector3>("GetTouchPosition", Array.Empty<object>());
		}

		public Vector2 GetTouchDelta()
		{
			return method_11<Vector2>("GetTouchDelta", Array.Empty<object>());
		}

		public Vector3 GetTouchPositionForGUI()
		{
			return method_11<Vector3>("GetTouchPositionForGUI", Array.Empty<object>());
		}

		public IntPtr GetFunction(string name)
		{
			return method_11<IntPtr>("GetFunction", new object[1] { name });
		}

		public bool LoadW8TouchDLL()
		{
			return method_11<bool>("LoadW8TouchDLL", Array.Empty<object>());
		}

		public void InitializeDLL()
		{
			method_8("InitializeDLL");
		}

		public void ResetWindowFeedbackSetting()
		{
			method_8("ResetWindowFeedbackSetting");
		}
	}
}
